ffmpeg专辑(三):linux编译ffmpeg.so多架构编译 |
您所在的位置:网站首页 › ndk 编译 ffmpeg › ffmpeg专辑(三):linux编译ffmpeg.so多架构编译 |
前言:在前两章已经介绍了,如何进行编译ffmpeg.so的一个完整过程。但是都是基于一个架构编译的,本文介绍一个sh脚本同时编译出双架构的方法,使编译过程更加方便和高效。 目前android端常用的架构有两个: arm64-v8a:包含32位和64位执行状态 armeabi-v7a:只包含32位执行状态。 ffmpeg专辑(一):linux编译ffmpeg.so入门 ffmpeg专辑(二):linux编译ffmpeg.so脚本改良与裁编 ffmpeg专辑(三):linux编译ffmpeg.so多架构编译 ffmpeg专辑(四):linux编译ffmpeg.so合并so篇 一、编写脚本 在前几篇文章中的ffmpeg-4.2.2源码目录下新建一个编译脚本:build_android_v8v7.sh: #!/bin/bash make clean #变量定义,变量前面的export可要可不要,如export API API=21 NDK=/home/liuzihui/softwaresCus/ndkr21/android-ndk-r21e TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 SYSROOT=$TOOLCHAIN/sysroot ADDITIONAL_CONFIGURE_FLAG="--enable-avdevice --enable-avcodec --enable-avformat --enable-swresample --enable-swscale --enable-postproc --enable-avfilter" function build_android { echo "===========================1========================" ./configure \ --prefix=$OUTPUT \ --target-os=android \ --arch=$ARCH \ --cpu=$CPU \ --enable-asm \ --enable-neon \ --enable-cross-compile \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffplay \ --disable-ffprobe \ --disable-symver \ --disable-ffmpeg \ --sysroot=$SYSROOT \ --cross-prefix=$CROSS_PREFIX \ --cc=$CC \ --cxx=$CXX \ --extra-cflags="-fPIC" \ $ADDITIONAL_CONFIGURE_FLAG echo "===========================2=====================" make clean echo "=============================${CC}===============" make -j4 make install } #arm64-v8a ARCH=arm64 CPU=armv8-a OUTPUT=/home/liuzihui/softwaresCus/ffmpegSource/ffmpeg-4.2.2/android/$CPU CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android- #AR AS LD等通用 CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang #CC单独指定,非通用(因为ndk中CC与AR路径不同,后同理) CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ #CXX单独指定,非通用 build_android #armeabi-v7a ARCH=arm CPU=armv7-a OUTPUT=/home/liuzihui/softwaresCus/ffmpegSource/ffmpeg-4.2.2/android/$CPU CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- #AR AS LD等通用 CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang #CC单独指定,非通用 CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++ #CXX单独指定,非通用 build_android二、执行脚本 在前几篇文章中的ffmpeg-4.2.2源码目录下,终端命令:赋予脚本权限和执行脚本: chmod +x build_android_v8v7.sh ./build_android_v8v7.sh等待几分钟,然后会在ffmpeg-4.2.2源码目录下自动生成android目录和里面的内容: 后记:本次编译没有使用so的裁剪(上一篇已经讲过),使用生成默认的全量包(即生成了7个so)的方式编译的,后面的文章将讲述如何合并这7个so文件。 注意:若想自行裁剪,可以参照上一章介绍,修改本次脚本中的自定义变量 ADDITIONAL_CONFIGURE_FLAG 里面的一些enable和disable属性进行功能模块的配置。 好了,本次专辑(三)就讲到这里了,更多内容,请期待下次的讲述 欢迎有问题的伙伴及时留意讨论,有不足之处还望指正 祝大家生活工作愉快~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |